/**
 * @Project : algorithm-learning
 * @Author : Ruoyu Wang
 * @User : MyComputer
 * @DateTime : 2024/3/23 9:48
 */

//小美定义一个字符串的权值为：字符串长度乘以字符的种类数。
//例如，"arcaea"的权值为6*4=24
//现在小美拿到了一个字符串，她希望你将该字符串切割成若干个连续子串，使得每个子串的权值不小于k。
//请你求出最终最多可以切割出的子串数量
//请注意，由于字符串过长，给出的字符串将是以连续段长度形式给出，
//例如:aabbaaa将描述为a(2)b(2)a(3),aaaaaaaaaaaab将描述为a(12)b(1)。
//
//输入描述
//  第一行输入一个两个正整数n,k，代表原字符串长度和每个子串至少应取的权值。
//  第二行一个仅包含小写字母、数字和括号的字符串。长度不超过10^6。
//  保证所有括号内的数字之和恰好等于n，给定的每个字母后面必然包含一个括号加数字。
//  1≤ k,n ≤10^18
//输出描述
//  如果整个字符串的权值小于k，请直接输出-1。
//  否则输出一个正整数，代表可以切割的最多子串数量。
//
//示例1
//输入
//7 6
//a(2)b(2)a(3)
//输出
//2
//说明
//  该字符串表示为"aabbaaa"，切割成"aab"和"baaa"即可。

#include <iostream>
#include <string>
#include <regex>

using namespace std;

int calculateMaxSubstringCount(const string &description, int minLengthK) {
    int totalLength = 0;
    int substringCount = 0;
    int groupStart = 0;
    regex pattern("(\\w)\\((\\d+)\\)");

    smatch matcher;
    string::const_iterator start = description.begin();
    string::const_iterator end = description.end();

    while (regex_search(start, end, matcher, pattern)) {
        string charToRepeat = matcher[1].str();
        int repeatCount = stoi(matcher[2].str());
        totalLength += repeatCount;

        while (totalLength >= minLengthK) {
            substringCount++;
            totalLength -= minLengthK;
            if (totalLength < minLengthK) {
                groupStart += minLengthK;
            }
        }

        start = matcher.suffix().first;
    }

    if (totalLength < minLengthK) {
        return -1; // The entire string's length is less than k
    } else {
        return substringCount;
    }
}

int main() {
    int n, k;
    cin >> n >> k;
    cin.ignore(); // Consume newline after the integers

    string description;
    getline(cin, description);

    int maxSubstrings = calculateMaxSubstringCount(description, k);
    cout << maxSubstrings << endl;

    return 0;
}

//#include <iostream>
//
//using namespace std;
//
//const int N = 1e6 + 10;
//long long sum[26][N];
//
//int main() {
//    long long n, k;
//    scanf("%lld%lld", &n, &k);
//    string s;
//    cin >> s;
//
//    long long cnt = 0;
//    for (int i = 0; i < s.length(); ++i) {
//        char ch = s[i++];
//        i++;
//        long long num = 0;
//        while (s[i] >= '0' && s[i] <= '9') {
//            num = num * 10 + s[i] - '0';
//            i++;
//        }
//        while (num--) {
//            cnt++;
//            for (int l = 0; l < 26; ++l) {
//                sum[l][cnt] = sum[l][cnt - 1];
//                if (ch == 'a' + l) sum[l][cnt]++;
//            }
//        }
//    }
//
//    int l = 1;
//    int r = 1;
//    int res = 0;
//    while (r <= cnt) {
//
//    }
//
////    for (int i = 0; i < 26; ++i) {
////        cout<<(char)('a'+i)<<" ";
////        for (int j = 0; j <= cnt; ++j) {
////            cout<<sum[i][j]<<" ";
////        }
////        cout<<endl;
////    }
//
//    printf("%d",res);
//
//    return 0;
//}
//7 6
//a(2)b(2)a(3)